Skip to content

Respect MFMA arch disablement in CI - #2455

Open
justinrosner wants to merge 2 commits into
developfrom
justinr-node-selection
Open

Respect MFMA arch disablement in CI#2455
justinrosner wants to merge 2 commits into
developfrom
justinr-node-selection

Conversation

@justinrosner

Copy link
Copy Markdown
Contributor

Motivation

Ensure PR and nightly MFMA CI jobs respect the architecture disable parameters. Previously, MFMA jobs could still run on any one of gfx908, gfx90a, or gfx942 even if those archs were explicitly disabled. This now matches the behavior that we can get for other archs (gfx950, Navi3x, etc.)

This is a port of https://github.com/ROCm/rocmlirTriton/pull/427 from rocmlirTriton.

Technical Details

  • Build the MFMA Jenkins node label dynamically from the enabled gfx908, gfx90a, and gfx942 architectures.
  • Apply the enabled-architecture check when deciding whether to run the MFMA codepath.
  • Skip MFMA testing when all supported MFMA architectures are disabled.

NOTE: rocMLIR already respects these disable flags in shouldRunFromChip() for chip specific tuning and performance matrix rows. However, build/test and other codepath-based rows still needed updating.

Test Plan

  • PR CI

Test Result

  • PR CI

Submission Checklist

@justinrosner
justinrosner requested a review from causten as a code owner August 17, 2026 23:41
Copilot AI lite review requested due to automatic review settings August 17, 2026 23:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the Jenkins pipeline logic for the mfma codepath so that MFMA CI jobs only run on explicitly enabled MFMA-capable architectures (gfx908/gfx90a/gfx942), matching existing “disable arch” behavior used elsewhere in the pipeline.

Changes:

  • Add a helper to compute the set of enabled MFMA architectures from disable908/disable90a/disable942.
  • Build the MFMA Jenkins node label dynamically from the enabled architecture set.
  • Prevent MFMA codepath execution when all supported MFMA architectures are disabled.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread mlir/utils/jenkins/Jenkinsfile
@codecov

codecov Bot commented Aug 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #2455      +/-   ##
===========================================
+ Coverage    82.57%   83.61%   +1.04%     
===========================================
  Files          120      121       +1     
  Lines        42852    43182     +330     
  Branches      7110     7181      +71     
===========================================
+ Hits         35381    36104     +723     
+ Misses        4815     4504     -311     
+ Partials      2656     2574      -82     
Flag Coverage Δ
gfx120x 83.48% <ø> (+0.95%) ⬆️
gfx950 83.36% <ø> (+1.02%) ⬆️
mfma 83.44% <ø> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 46 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@justinrosner
justinrosner requested a lite review from Copilot August 18, 2026 17:49
@justinrosner justinrosner added the claude-review Trigger automated PR review by claude[bot]; auto-removed after the run. label Aug 18, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

// Run mfma on private CI
if ((codepath == "mfma") && params.canXdlops) {
if ((codepath == "mfma") && params.canXdlops &&
!getEnabledMfmaArchitectures().isEmpty()) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Worth calling out a side effect of skipping the whole mfma row: preMergeCheck() (Jenkinsfile:906) and preMergeCheckPackage() (Jenkinsfile:934) are both gated on codepath == "mfma", and on private CI (canXdlops == true) there is no vanilla row to pick them up. So a run with all three MFMA archs disabled now silently loses the Jenkins-side premerge static check and the librockcompiler_deps.cmake accuracy check, with no log line saying why. Suggest either an echo here when the enabled list is empty (so the skip is visible in the build log), or moving those two checks onto a codepath-independent row so they survive an MFMA node outage.

@rocmlir-pr-reviewer rocmlir-pr-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: COMMENT  ·  Findings: 1 (0 Critical, 0 Major, 1 Minor)


Scope

Single-file change to mlir/utils/jenkins/Jenkinsfile. It adds getEnabledMfmaArchitectures() and uses it to (a) build the MFMA Jenkins node label from only the enabled gfx942/gfx908/gfx90a archs, (b) make shouldRunFromCodepath("mfma") and shouldRunBuildAndTest("mfma") return false when all three are disabled, and (c) gate the Code coverage matrix row on shouldRunFromCodepath(CODEPATH).

Findings

  • mlir/utils/jenkins/Jenkinsfile:1171 (Minor) — skipping the whole mfma row also silently skips the mfma-only premerge static checks; consider surfacing a warning or relocating those checks.

Notes

  • Verified all four getLabelFromCodepath call sites are guarded before the new error at :1033 can fire — Build and Test (:1533, under shouldRunBuildAndTest at :1527), Parameter sweeps (:1689, under :1683), MIGraphX (:2211, under :2205), and Code coverage (:2342, under the newly added when at :2333). This resolves the earlier Copilot review comment; the error is now purely defensive against a future unguarded caller.
  • With nothing disabled the generated label is byte-identical to the old literal (mlir && (gfx942 || gfx908 || gfx90a)), so the default private-CI path is unchanged. label is declared String at :1029, so the new GString is coerced before it reaches withHealthyNode.
  • The new when on Code coverage also gates the gfx120x and gfx950 rows, not just mfma. All three coverage codepaths require params.canXdlops, so on public CI the stage now yields zero rows instead of failing to find a node and being swallowed by catchError. That reads as an improvement, but it is broader than the PR description states — worth confirming it is intended.
  • getEnabledMfmaArchitectures() uses the params.disableX == false idiom, consistent with :1174/:1178. Note the failure mode is asymmetric: a null or string-typed param evaluates as "disabled", which would now silently skip all MFMA CI rather than a single arch. Consistent with existing code, so not flagged.
  • getLabelFromChip() (:1068) keeps its per-chip literals; those rows are already gated by shouldRunFromChip, which consults the same disable flags, so no divergence was introduced.
  • No Lit/E2E test expectations apply here — this is CI orchestration only, with no IR, C-API, or librockcompiler surface change, so no coordinated MIGraphX update is needed.

CI status

No checks in /tmp/pr/checks.json are in bucket: fail or cancel. Several Jenkins stages (Build and Test, MIGraphX, Code coverage, Parameter sweeps) are still pending, which is expected mid-run.

@rocmlir-pr-reviewer rocmlir-pr-reviewer Bot removed the claude-review Trigger automated PR review by claude[bot]; auto-removed after the run. label Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants